

public class SingletonDCL {
    //定义一个全局变量
    private static volatile SingletonDCL instance = null;  //创建一个私有的静态Singleton类型的变量instance并初始化为null

    //构建方法私有制
    private SingletonDCL(){}   //意味着其他类不能直接通过new来创建Singleton类的实例，只能通过getInstance()方法来获取实例

    public static SingletonDCL getInstance(){  //对外提供一个获得对象的方法
        //第一次判断是否需要加锁
        if (instance == null){
            //获取锁
            synchronized (SingletonDCL.class){
                //判断一个对象是否已经创建过
                if (instance == null){
                    //如果instance为null,则创建一个新的SingletonDLE对象并赋值给instance
                    instance = new SingletonDCL();
                }
            }
        }
        //返回对象
        return instance;
    }
}
